package leetcode;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;

/**
 * Created by Ghost on 2014/10/8 0008.
 */
public class LRUCache {
    public int capacity;
    public LinkedHashMap<Integer,Integer> map;
    public LRUCache(int capacity) {
        this.capacity = capacity;
        this.map = new LinkedHashMap<Integer, Integer>(capacity,(float)0.5,true);

    }
    public int get(int key) {
        if(map.containsKey(key))
            return map.get(key);
        return -1;
    }

    public void set(int key, int value) {
        if(map.size()<capacity || map.containsKey(key))
            map.put(key,value);
        else{
            Iterator<Integer> it = map.keySet().iterator();
            int itt = it.next();
            map.remove(itt);
            map.put(key,value);
        }
    }

    public static void main(String[] args){
        LRUCache lruCache = new LRUCache(3);
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(7);
        list.add(0);
        list.add(1);
        list.add(2);
        list.add(0);
        list.add(3);
        list.add(0);
        list.add(4);
        list.add(2);
        list.add(3);
        list.add(0);
        list.add(3);
        list.add(2);


        for(int j=0;j<list.size();j++){
            int val = list.get(j);
            lruCache.set(j,val);
            for(int i=0;i<lruCache.capacity;i++)
                System.out.print(i+" "+lruCache.map.get(i)+"    ");
            System.out.println();
        }
    }
}
